/imports
/imports/knockout
knockout-3.0.0.js
/typings
knockout.d.ts
headers.ts
io.ts
ko.ts
managed.ts
managed2.ts
pe.html
pe.ts
unmanaged.ts
297
 
298
          var dataEntry = this.dataEntries[dataEntryCount];
299
          if (!dataEntry)
300
            this.dataEntries[dataEntryCount] = dataEntry = new ResourceDataEntry();
301
 
302
          dataEntry.name = name;
303
          dataEntry.integerId = id;
304
 
305
          dataEntry.dataRva = reader.readInt();
306
          dataEntry.size = reader.readInt();
307
          dataEntry.codepage = reader.readInt();
308
          dataEntry.reserved = reader.readInt();
309
 
310
          dataEntryCount++;
311
        }
312
        else {
313
          contentRva = contentRva - highBit; // clear hight bit
314
          reader.setVirtualOffset(baseVirtualOffset + contentRva);
315
 
316
          var directoryEntry = this.subdirectories[directoryEntryCount];
317
          if (!directoryEntry)
318
            this.subdirectories[directoryEntryCount] = directoryEntry = new ResourceDirectoryEntry();
319
 
320
          directoryEntry.name = name;
321
          directoryEntry.integerId = id;
322
 
323
          directoryEntry.directory = new ResourceDirectory();
324
          directoryEntry.directory.readCore(reader, baseVirtualOffset);
325
 
326
          directoryEntryCount++;
327
        }
328
      }
329
 
330
      this.dataEntries.length = dataEntryCount;
331
      this.subdirectories.length = directoryEntryCount;
332
    }
333
 
334
    readName(reader: io.BufferReader): string {
335
      var length = reader.readShort();
336
      var result = "";
337
      for (var i = 0; i < length; i++) {
338
        result += String.fromCharCode(reader.readShort());
339
      }
340
      return result;
341
    }
342
  }
343
 
344
  export class ResourceDirectoryEntry {
345
    name: string = "";
346
    integerId: number = 0;
347
 
348
    directory: ResourceDirectory = new ResourceDirectory();
349
 
350
    toString() {
351
      return (this.name ? this.name + " " : "") + this.integerId +
352
        (this.directory ? 
353
          "[" +
354
            (this.directory.dataEntries ? this.directory.dataEntries.length : 0) +
355
            (this.directory.subdirectories ? this.directory.subdirectories.length : 0) +
356
          "]" :
357
          "[null]");
358
    }
359
  }
360
 
361
  export class ResourceDataEntry {
362
    name: string = "";
363
    integerId: number = 0;
364
    dataRva: number = 0;
365
    size: number = 0;
366
    codepage: number = 0;
367
    reserved: number = 0;
368
 
369
    toString() {
370
      return (this.name ? this.name + " " : "") + this.integerId;
371
    }
372
  }
373
}